#ifndef ZADANIE_H
#define ZADANIE_H

#include <iostream>
#include <iomanip>
#include "windows.h"
#include <stdio.h>
using namespace std;

enum statusZadania { nieNadeszlo = 0,
					oczekujeNaWejscieDoSystemu = 1,
					czekaWKolejce = 2,
					wykonujeSieWMaszynie = 3,
					zablokowaneWMaszynie = 4,
					wyszloZSystemu = 5};

class Zadanie
{
private:
        int nr;
        int dlugosc;
        int dlugoscWykonana;
        int czasPrzybycia;
        int czasOpuszczenia;
        int czasOczekiwania;
        int czasPrzebywania;
        COLORREF kolor;
        int nrGniazda;
        int nrMaszyny;
        int nastepneGniazdo;
		statusZadania status;
		int nrStrumienia; //
		
public:
       static int aktualnyNr;  
public:
       Zadanie();
       Zadanie(int _nr, int _dlugosc, int _czasPrzybycia, COLORREF kolor);
       Zadanie(int _nr, int _dlugosc, int _czasPrzybycia, COLORREF kolor, int _nrStrumienia);
       ~Zadanie(void); 
       bool operator==(const Zadanie& z);
       bool operator<(const Zadanie &z) const;
	   Zadanie& operator= (const Zadanie& z);
       
       
public:
      int getNr(void) {return nr;}
      void setNr(int _nr) { nr = _nr; }  
	  COLORREF getKolor(void) {return kolor;}
      void setKolor(COLORREF _kol) { kolor = _kol; } 
      int getDlugosc(void) {return dlugosc;}
      void setDlugosc(int _dlugosc) {dlugosc = _dlugosc; }
      int getDlugoscWykonana(void) {return dlugoscWykonana;}
      void setDlugoscWykonana(int _dlugosc) {dlugoscWykonana = _dlugosc;}
      void incDlugoscWykonana(void) { dlugoscWykonana++; }
      int getCzasPrzybycia(void) {return czasPrzybycia; }
      void setCzasPrzybycia(int _t) {czasPrzybycia = _t; }
      int getCzasOpuszczenia(void) {return czasOpuszczenia; }
      void setCzasOpuszczenia(int _t) {czasOpuszczenia = _t; }
      int getCzasOczekiwania(void) { return czasOczekiwania; }
      void setCzasOczekiwania(int _t) { czasOczekiwania = _t; }
      void incCzasOczekiwania(void) { czasOczekiwania++; }
      int getCzasPrzebywania(void) { return czasPrzebywania; }
      void setCzasPrzebywania(int _t) { czasPrzebywania = _t; } 
      void incCzasPrzebywania(void) { czasPrzebywania++; }
      int getNrGniazda(void) { return nrGniazda;}
      void setNrGniazda(int _nr) { nrGniazda = _nr; }
      int getNrMaszyny(void) { return nrMaszyny; }
      void setNrMaszyny(int _nr) { nrMaszyny = _nr; }
      int getNastepneGniazdo() { return nastepneGniazdo; }
      void setNastepneGniazdo(int _n) { nastepneGniazdo = _n; }
	  statusZadania getStatusZadania() { return status; }
	  void setStatusZadania(statusZadania _status) { status = _status; }
	  void updateStats(void);
	  char * statusToString();
	  int getNrStrumienia() { return nrStrumienia; }
	  void setNrStrumienia(int nr) { nrStrumienia = nr; }

public:
       char * wypisz2(void);  
       static bool comp(Zadanie i,Zadanie j)
       {
			return i.czasPrzybycia < j.czasPrzybycia;
       }
       static bool comp2(Zadanie * i,Zadanie * j)
       {
			return i->czasPrzybycia < j->czasPrzybycia;
       }

};


#endif
